#pragma once
#include "Element_Base.h"
class Element_Beam3_Twist :
    public::Element_Base
{
public:
    virtual void coutElement()override;
    virtual void foutElement(std::ofstream& fout)override;

    virtual int getDOFNode()const override;
    virtual bool get_Ke(Eigen::MatrixXd& ke)override;
    virtual void get_Load(Eigen::VectorXd& Feq)override;
    virtual void getparameterlist(Eigen::VectorXd& x1, Eigen::VectorXd& x2)override;
    virtual void getInterforce(Eigen::VectorXd& F1, Eigen::VectorXd& F2)override;
    virtual void getdisplacement(std::vector<double>& displacement, double position)override;

private:
    Eigen::VectorXd ci, wi;
    void Gaussian_integral();
    void get_dNx(double c, double dl, Eigen::VectorXd& dNx);
    void get_dNxx(double c, double dl, Eigen::VectorXd& dNxx);
    void get_dNxxx(double c, double dl, Eigen::VectorXd& dNxxx);
};

